#include <future>
#include <iostream>
#include <chrono>
using namespace std;

//deferred会等待get时调用add
//async会立即创建线程调用add

int add(int num1, int num2)
{
    std::cout << "加法" << endl;
    return num1 + num2;
}

int main()
{
    // 创建线程，立即执行
    std::future<int> furtu = std::async(std::launch::async, add, 10, 20);
    std::this_thread::sleep_for(std::chrono::seconds(1)); // launch::ansync会立即执行
    std::cout << "-------1------" << std::endl;
    int sum = furtu.get(); //阻塞，直到有结果
    std::cout << "-------2------" << std::endl;
    std::cout << sum << std::endl;
    return 0;
}

// int main()
// {
//     // 创建线程，立即执行
//     std::future<int> furtu = std::async(std::launch::deferred, add, 10, 20);
//     std::this_thread::sleep_for(std::chrono::seconds(1)); // launch::ansync会立即执行
//     std::cout << "-------1------" << std::endl;
//     int sum = furtu.get(); //阻塞，直到有结果
//     std::cout << "-------2------" << std::endl;
//     std::cout << sum << std::endl;
//     return 0;
// }
